From 6a95c873e5c43df7c778367c3a907dd121aaf362 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Thu, 22 Nov 2007 14:16:25 +0000 Subject: [PATCH] x86: make set_task_gate() x86-32-only since x86-64 doesn't have task gates. Signed-off-by: Jan Beulich --- xen/arch/x86/traps.c | 9 --------- xen/arch/x86/x86_32/traps.c | 9 +++++++++ xen/include/asm-x86/desc.h | 1 - 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index b00400e015..00b30a16d2 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -2581,15 +2581,6 @@ void set_system_gate(unsigned int n, void *addr) _set_gate(idt_table+n,14,3,addr); } -void set_task_gate(unsigned int n, unsigned int sel) -{ - idt_table[n].b = 0; - wmb(); /* disable gate /then/ rewrite */ - idt_table[n].a = sel << 16; - wmb(); /* rewrite /then/ enable gate */ - idt_table[n].b = 0x8500; -} - void set_tss_desc(unsigned int n, void *addr) { _set_tssldt_desc( diff --git a/xen/arch/x86/x86_32/traps.c b/xen/arch/x86/x86_32/traps.c index c87cb6bb7d..64afdee5db 100644 --- a/xen/arch/x86/x86_32/traps.c +++ b/xen/arch/x86/x86_32/traps.c @@ -258,6 +258,15 @@ unsigned long do_iret(void) return 0; } +static void set_task_gate(unsigned int n, unsigned int sel) +{ + idt_table[n].b = 0; + wmb(); /* disable gate /then/ rewrite */ + idt_table[n].a = sel << 16; + wmb(); /* rewrite /then/ enable gate */ + idt_table[n].b = 0x8500; +} + void __devinit subarch_percpu_traps_init(void) { struct tss_struct *tss = &doublefault_tss; diff --git a/xen/include/asm-x86/desc.h b/xen/include/asm-x86/desc.h index 2893b0b8d0..079e9e158b 100644 --- a/xen/include/asm-x86/desc.h +++ b/xen/include/asm-x86/desc.h @@ -214,7 +214,6 @@ extern struct desc_struct compat_gdt_table[]; extern void set_intr_gate(unsigned int irq, void * addr); extern void set_system_gate(unsigned int n, void *addr); -extern void set_task_gate(unsigned int n, unsigned int sel); extern void set_tss_desc(unsigned int n, void *addr); #endif /* !__ASSEMBLY__ */ -- 2.30.2